<?php

declare(strict_types=1);

namespace app\model;

use app\model\base\BaseMobileNotifyAgentModel;

/**
 * 
 *
 * @mixin \think\Model
 * @property int $id 自增id
 * @property int $order_id 订单号
 * @property string $notify_url 回调地址
 * @property string $params 回调参数
 * @property int $status 状态：1待发送 2发送成功 3发送失败
 * @property int $send_time 发送时间
 * @property string $result 发送结果
 * @property int $try_times 回调次数【失败后最多尝试几次】
 * @property string $created_at 创建时间
 * @property string $updated_at 更新时间
 * @property-read mixed $status_text
 * @property-read bool|string $send_time_text
 */
class MobileNotifyAgent extends BaseMobileNotifyAgentModel
{

    // 状态：1待发送 2发送成功 3发送失败
    const STATUS_WAIT = 1; //  待发送
    const STATUS_SUCCESS = 2; // 发送成功
    const STATUS_FAIL = 3; // 发送失败

    /**
     * 发送状态
     * @var array
     */
    protected static $statusMap = [
        self::STATUS_WAIT => '待发送',
        self::STATUS_SUCCESS => '发送成功',
        self::STATUS_FAIL => '发送失败',
    ];

    /**
     * 发送状态文本
     * @param $value
     * @param $model
     * @return mixed
     */
    public function getStatusTextAttr($value, $model) {
        return self::$statusMap[$model['status']] ?? '未知';
    }

    /**
     * 发送时间
     * @param $value
     * @param $model
     * @return false|string
     */
    public function getSendTimeTextAttr($value, $model) {
        return $model['send_time'] ? date('Y-m-d H:i:s', $model['send_time']) : '';
    }

    /**
     * 代理接口回调信息
     * @param $params
     * @return array
     * @throws \think\db\exception\DbException
     */
    public function notifyInfo($params) {
        $subOrderId = $params['order_id'] ?? '';
        $list = MobileNotifyAgent::where(['order_id' => $subOrderId])
            ->json(['params'])
            ->append(['status_text', 'send_time_text'])
            ->paginate()->toArray();
        return $list;
    }
}
